#ifndef __CLIENT_H__
#define __CLIENT_H__

#include <string>

#include "uiMessage.h"

class Client 
    : public BaseHandle<LoginMsg>
    , public BaseHandle<RegisterMsg>
    , public BaseHandle<CmdMsg>
{
public:
    Client(std::string addr, int port);
    ~Client();

    void run();                                 // 启动客户端服务
    
public:
    // 客户端登录返回结果
    virtual bool handle(const LoginMsg *pMsg);
    virtual bool handle(const RegisterMsg *pMsg);
    virtual bool handle(const CmdMsg *pMsg);

private:
    static void RecvMsg(int conn);              // 接收线程

private:
    int                     m_port;             // 服务器端口
    std::string             m_addr;             // 服务器ip
    int                     m_sockfd;           // 与服务器建立连接的套接字描述符

    static bool             m_running;          // 接收消息线程变量
};

#endif // __CLIENT_H__